
import time
import pypinyin
from pypinyin import Style
from django.shortcuts import render,redirect,HttpResponse
from django.http import JsonResponse
from web.forms.project import ProjectModelForm
from web import models
from Utils.tencent.cos import create_bucket
def project_list(request):
    """项目列表"""
    if request.method =='GET':

        project_dict = {'star':[],'my':[],'join':[]}
        my_project_list = models.Project.objects.filter(creator=request.tracer.user)
        for i in my_project_list:
            if i.star:
                project_dict['star'].append({'value':i,'type':'my'})
            else:
                project_dict['my'].append(i)
        join_project_list = models.ProjectUser.objects.filter(user=request.tracer.user)
        for item in join_project_list:
            if item.star:
                project_dict['star'].append({'value':item.project, 'type':'join'})
            else:
                project_dict['join'].append(item.project)
        form = ProjectModelForm(request)


        return render(request,'project_list.html',{'form':form,'project_dict':project_dict})
    form = ProjectModelForm(request, data=request.POST)
    if form.is_valid():
        #为项目创建一个桶
        name = form.cleaned_data['name']
        cname = pypinyin.slug(name)
        bucket = "{}-{}-{}-1257250950".format(cname,request.tracer.user.mobile_phone, str(int(time.time())))
        region = "ap-chengdu"
        create_bucket(bucket, region)
        #  2.创建项目
        # 验证通过 项目名 颜色 描述  +  creator 谁创建的项目
        form.instance.region = region
        form.instance.bucket = bucket
        form.instance.creator = request.tracer.user
        instance = form.save()
        #  3. 项目初始化问题类型
        issues_object_list = []
        for item in models.IssuesType.PROJECT_INIT_LIST: #  [任务 功能  BUG]
            issues_object_list.append(models.IssuesType(project=instance, title=item))
        models.IssuesType.objects.bulk_create(issues_object_list)

        return JsonResponse({'status':True})
    return JsonResponse({'status':False,'error':form.errors})


def project_star(request, project_type, project_id):
    """ 星标项目 """
    if project_type == 'my':
        models.Project.objects.filter(id=project_id, creator=request.tracer.user).update(star=True)
        return redirect('project_list')
    elif project_type == 'join' :
        models.ProjectUser.objects.filter(project_id=project_id, user=request.tracer.user).update(star=True)
        return redirect('project_list')

    return HttpResponse("请求错误")


def project_unstar(request, project_type, project_id):
    """ 取消星标 """
    if project_type == 'my':
        models.Project.objects.filter(id=project_id, creator=request.tracer.user).update(star=False)
        return redirect('project_list')
    elif project_type == 'join':
        models.ProjectUser.objects.filter(project_id=project_id, user=request.tracer.user).update(star=False)
        return redirect('project_list')
    return HttpResponse('请求错误')

